// 引入公共请求函数 request
import {
	request,
	upload
} from "@/utils/request.js";

// 
import {
	ElMessage,
} from 'element-plus';

// 挂载工具包
import util from "@/utils/util";

// pinia
import {
	useUserStore,
	useConfigStore,
	useFileStore
} from "@/stores";


// 获取列表
async function getlist(url, data, method = 'get') {
	const res = await request({
		method,
		url,
		load: true,
		data,
		alert: true,
	})
	return res.data || res.rows || [];
}

// 获取分页列表
async function getPaginglist(url, data, method = 'get') {
	return await request({
		method,
		url,
		load: true,
		data,
		alert: true,
	})
}

// 获取对象
async function getInfo(url, data, method = 'get') {
	const res = await request({
		method,
		url,
		load: true,
		data,
		alert: true,
	})
	return res.data || {};
}

// 操作不需要返回参数的接口处理
async function handle(url, data, method = 'get') {
	const res = await request({
		method,
		url,
		load: true,
		data,
		alert: true,
	})

	// util.alert('操作成功！');
	return true;
}


// 抛出 对象
export default {

	// 上传
	async upload(file) {
		const res = await upload({
			file,
		});
		return res;
	},

	// 查询所有的字典
	async getAllDict() {
		const res = await getInfo('/webApi/nologin/getAllDict', {}, 'get');

		// 替换
		useConfigStore().update(res)
	},

	// 获取用户信息
	async getUser() {

		// localStorage.setItem("token", '--');
		if (!localStorage.getItem("token")) return;
		// const res = await getInfo('/webApi/getUserInfo', {}, 'get');
		const res = await getPaginglist('/getInfoApp', {}, 'get');
		let userinfo = res.user;
		userinfo.roles = res.roles;
		useUserStore().update(userinfo)
		return '';
	},
	
	// 系统配置
	getxtpzList() {
		return getInfo('/webApi/nologin/getxtpzList', {}, 'get');
	},

	// 首页
	index: {

		// 轮播图列表
		getBanner(data = {
			type: 1
		}) {
			return getlist('/webApi/nologin/list', data, 'get');
		},


		// 所有的赛事
		allSkill() {
			return getlist('/webApi/allSkill', {}, 'get');
		}

	},

	// 分页
	pagingApis: {

		// 获取公告列表--分页
		getNotice(data = {}) {
			return getPaginglist('/webApi/nologin/tNotice/list', data, 'get');
		},

		// 获取赛事新闻列表--分页
		getNews(data = {}) {
			return getPaginglist('/webApi/nologin/tNews/list', data, 'get');
		},

		// 查询政策文件列表--分页
		getPolicy(data = {}) {
			return getPaginglist('/webApi/nologin/tPolicy/list', data, 'get');
		},

		// 获奖作品列表--分页
		getAwardWork(data = {}) {
			return getPaginglist('/webApi/nologin/tAwardWorklist', data, 'get');
		},

		// 赛事项目列表--分页
		getSkill(data = {}) {
			return getPaginglist('/webApi/nologin/skilllist', data, 'get');
		},

	},

	// 详情
	details: {

		// 获取公告-详情
		getNotice(id) {
			return getInfo(`/webApi/nologin/tNotice/${id}`, {}, 'get');
		},

		// 获取赛事新闻-详情
		getNews(id) {
			return getInfo(`/webApi/nologin/tNews/${id}`, {}, 'get');
		},

		// 查询政策文件-详情
		getPolicy(id) {
			return getInfo(`/webApi/nologin/tPolicy/${id}`, {}, 'get');
		},

		// 获奖作品---详情
		getAwardWork(id) {
			return getInfo(`/webApi/nologin/tAwardWork/${id}`, {}, 'get');
		},

		// 赛事详情信息
		getSkill(id) {
			return getInfo(`/webApi/nologin/skillDetail/${id}`, {}, 'get');
		},

	},

	// 用户
	user: {

		// 用户注冊信息
		register(data = {}) {
			return handle('/webApi/nologin/register', data, 'get');
		},

		// 注册协议和隐私政策
		twxxlist(type = 1) {
			// type "类型" 1 用户协议 2 隐私政策
			return getInfo('/webApi/nologin/twxxlist', {
				type
			}, 'get');
		},

		// 登录
		async login(data) {
			return await request({
				method: 'post',
				headers: {
					"Content-Type": "application/json;charset=UTF-8",
				},
				url: "/loginXcx",
				data,
				alert: true,
			})
		},

		// 学校和院系列表
		getDeptlist(data = {}) {
			return getlist('/webApi/nologin/getDeptlist', data, 'get');
		},

		// 赛事--申报
		skillApply(data = {}) {
			return handle('/webApi/skillApply', data, 'post');
		},

		// 查询人员通过角色（查专家）system:zj
		getUserlistByRole(roleKey) {
			return getlist('/webApi/getUserlistByRole', {
				roleKey,
			}, 'get');
		},

		// 赛事--报名
		apply(data = {}) {
			return handle('/webApi', data, 'post');
		},
		
		// 赛事--报名 --判断学号是否报名过
		isBmByStudyNo(data = {}) {
			return handle('/webApi/isBmByStudyNo', data, 'get');
		},

	},

	// 文件
	file: {},

};